package com.example.demo2.mapper;

import com.example.demo2.entity.Result;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * ResultMapper 接口用于处理与 Result 实体相关的数据库操作
 */
@Mapper
public interface ResultMapper {

    /**
     * 插入一个新的结果到数据库
     * @param result 要插入的结果
     */
    void insertResult(Result result);

    /**
     * 根据公式查找结果，支持分页
     * @param formula 公式
     * @param offset 偏移量（用于分页）
     * @param size 每页大小
     * @return 结果列表
     */
    List<Result> findByFormula(@Param("formula") String formula, @Param("offset") int offset, @Param("size") int size);

    /**
     * 根据公式计算结果总数
     * @param formula 公式
     * @return 总数
     */
    int countByFormula(@Param("formula") String formula);
    /**
     * 根据公式和名称查找结果，支持分页
     * @param formula 公式
     * @param name 名称
     * @param offset 偏移量（用于分页）
     * @param size 每页大小
     * @return 结果列表
     */
    List<Result> findByFormulaAndName(@Param("formula") String formula, @Param("name") String name, @Param("offset") int offset, @Param("size") int size);

    /**
     * 根据公式和名称计算结果总数
     * @param formula 公式
     * @param name 名称
     * @return 总数
     */
    int countByFormulaAndName(@Param("formula") String formula, @Param("name") String name);

//    @Select("SELECT * FROM result")
//    List<Result> findAll();
    List<Result> findByName(@Param("name") String name);
    List<String> findAllDistinctNames();

}
